package org.lestr.secuel.noyau.systemeLogique.effets;

import org.jdom.Element;

import org.lestr.secuel.m3ds.Variable;

public class EffetVariable extends EffetAbstrait {

	
	// Déclaration de constantes
	private static final long serialVersionUID = 1L;

	
	// Déclaration des attributs
	private Variable cible;
	private Variable source;
	
	
	// Constructeur
	public EffetVariable(){
	
		// Instanciation des attributs
		cible = null;
		source = null;
		
		// Défini le nom
		setTypeNom("Variable");
		
	}// FIN Constructeur
	
	
	/** Défini la variable dont la valeur est à mettre dans la variable cible */
	public void defVariableSource(Variable variable){
		
		this.source = variable;
		
	}// FIN defVariableSource
	
	
	/** Retourne la variable dont la valeur est à mettre dans la variable cible */
	public Variable retVariableSource(){
		
		return source;
		
	}// FIN retVariableSource

	
	/** Défini la variable à modifier */
	public void defVariableCible(Variable variable){
		
		this.cible = variable;
		
	}// FIN defVariableCible
	
	
	/** Retourne la variable à modifier */
	public Variable retVariableCible(){
		
		return cible;
		
	}// FIN retVariableCible
	
	
	/** Applique l'effet */
	public void appliquer(){
		
		// Si non-null
		if((cible != null) && (source != null))
			cible.setValeur(source.getValeur().clone());
		
	}// FIN applique


	@Override
	public void charger(Element xml) {
		// TODO Auto-generated method stub
		
	}


	@Override
	public Element compiler() {
		// TODO Auto-generated method stub
		return null;
	}
	
	
}// FIN EffetVariable